/*
 * 工资统计（4分）
 */

#include<stdio.h>

void Input(float wage[], int n);

float Compute(float wage[], int n, float *pmaxwage, float *pminwage);

int main() {
	setbuf(stdout, NULL);

	// NOTE: Variable declaration
	float wage[50], maxwage, minwage, avewage;
	int n;

	// NOTE: Inputs
	printf("Please input n:\n");
	scanf("%d", &n);


	Input(wage, n);

	// NOTE: Process
	avewage = Compute(wage, n, &maxwage, &minwage);


	// NOTE: Outputs
	printf("maxwage=%.2f, minwage=%.2f, avewage=%.2f\n", maxwage, minwage, avewage);

	// NOTE: Ending
	return 0;
}


void Input(float wage[], int n) {
	for (int i = 0; i < n; ++i) {
		scanf("%f", &wage[i]);
	}
}

float Compute(float wage[], int n, float *pmaxwage, float *pminwage) {
	float sum = 0;

	// STEP: 对于pmaxwage和pminwage所指空间初始化，即：对主函数中maxwage和minwage进行初始化。
	*pmaxwage = wage[0];
	*pminwage = wage[0];

	// STEP: 遍历工资表数组。更新最高工资和最低工资，并累加各工资总和。
	for (int i = 0; i < n; ++i) {
		// HINT: 当前轮次的工资值，小于已经记录的最低工资，进行替换。
		if (wage[i] < *pminwage) {
			*pminwage = wage[i];
		}

		// HINT: 当前轮次的工资值，大于已经记录的最高工资，进行替换。
		if (wage[i] > *pmaxwage) {
			*pmaxwage = wage[i];
		}

		// HINT: 累加工资总和
		sum += wage[i];
	}

	// STEP: 返回值是平均工资。用工资总和sum除以员工人数n即可。
	return sum / n;
}

// ALERT: 测试用例：
/*
10
1200.34
2378.48
8600.56
5372.42
6317.25
7265.88
2156.39
1876.31
1792.14
4326.22
maxwage=8600.56, minwage=1200.34, avewage=4128.60
*/
